package elicecn.util.encrypt;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

/**
 * 表示数据校验和的接口，用于单向加密或数据校验。
 * 
 * @author 屹砾
 * @email eli.wuhan@gmail.com
 * @time 2009-3-1
 */
public interface Encrypt {

	/**
	 * 使用指定的文件进行计算，得到计算后的结果(十六进制数字字符串)。
	 * 
	 * @param file
	 *            文件
	 * @return 计算后的结果(十六进制数字字符串)。
	 */
	String calc(File file) throws FileNotFoundException, IOException;

	/**
	 * 使用指定的输入流进行计算，得到计算后的结果(十六进制数字字符串)。
	 * 
	 * @param is
	 *            输入流
	 * @return 计算后的结果(十六进制数字字符串)。
	 */
	String calc(InputStream is) throws IOException;

	/**
	 * 使用指定的字符串进行计算，得到计算后的结果(十六进制数字字符串)。
	 * 
	 * @param string
	 *            字符串
	 * @return 计算后的结果(十六进制数字字符串)。
	 */
	String calc(String string);

	/**
	 * 使用指定的字节数组进行计算，得到计算后的结果(十六进制数字字符串)。
	 * 
	 * @param bytes
	 *            字节数组
	 * @return 计算后的结果(十六进制数字字符串)。
	 */
	String calc(byte[] bytes);
}
